home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1993 July / InfoMagic USENET CD-ROM July 1993.ISO / sources / x / volume1 / torch / part01 next >
Encoding:
Internet Message Format  |  1993-04-28  |  52.9 KB

  1. From: mikew@wyse.wyse.com (Mike Wexler)
  2. Newsgroups: comp.sources.x
  3. Subject: v01i062:  torch: dialog utilities, Part01/04
  4. Message-ID: <1735@wyse.wyse.com>
  5. Date: 12 Oct 88 18:40:57 GMT
  6. Approved: mikew@wyse.com
  7.  
  8. Submitted-by: gary@torch.UUCP (Gary Henderson)
  9. Posting-number: Volume 1, Issue 62
  10. Archive-name: torch/part01
  11.  
  12. #! /bin/sh
  13. # This is a shell archive.  Remove anything before this line, then unpack
  14. # it by saving it into a file and typing "sh file".  To overwrite existing
  15. # files, type "sh file -c".  You can also feed this as standard input via
  16. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  17. # will see the following message at the end:
  18. #        "End of archive 1 (of 4)."
  19. # Contents:  README Makefile Xdefaults alert.bitmaps alert.c
  20. #   classname.h
  21. # Wrapped by mikew@wyse on Wed Oct 12 11:38:37 1988
  22. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  23. if test -f 'README' -a "${1}" != "-c" ; then 
  24.   echo shar: Will not clobber existing file \"'README'\"
  25. else
  26. echo shar: Extracting \"'README'\" \(2046 characters\)
  27. sed "s/^X//" >'README' <<'END_OF_FILE'
  28. XHere are the sources to 3 X11 (R2) utility programs: yorn, gs and alert.  
  29. X
  30. XAll three print a message in a window, yorn then waits for the user to click a
  31. Xtick or cross button and returns it as an exit status, gs requests text to
  32. Xtyped by the user, waits for a finished button to be click and returns the
  33. Xtext on stdout and alert simply waits for an ok button to be clicked by the
  34. Xuser. 
  35. X
  36. XThey all use widgets to obtain as pretty user interface if the connection to
  37. Xthe X-server can be established, otherwise terminal text only versions come
  38. Xinto play (useful if they are used in unix start up shell scripts and the
  39. Xserver can't be started for some reason).
  40. X
  41. XThe utilities have been tested on a sun 360 running BSD unix 4.2 (with the
  42. X'-DBSD' flag set in the Makefile) and our own machines running 
  43. XUnisoft unix V.2 (with the '-DUNISOFTV' flag set).
  44. X
  45. XWhen complied (by typing make when in the correct directory and with the
  46. Xcorrect '-D' flag set in the Makefile) a single binary called 'alert' is
  47. Xproduced.  This should be linked to 'yorn' and then linked again to 'gs'.  The
  48. Xbinary decides what utility to act like by its argv[0] argument.  This
  49. Xarrangement stops parts of the X libraries (which aren't small !) from being
  50. Xstored 3 times in 3 separate binaries, thus saving disk space.
  51. X
  52. XWidget application writers may find the file misc.c of interest since this
  53. Xadds a string to pixmap converter to the toolkit so users can specify a
  54. Xbackground bitmap file name to be used (when converted) as a widget's
  55. Xbackground pixmap.
  56. X
  57. XA sample .Xdefaults file is included (for colour servers) that gives some
  58. Xexamples of what can be redefined from such a file.  The file needs to be in
  59. Xyour home directory as .Xdefaults or moved to the
  60. Xfile /usr/lib/X11/app-defaults/Xopentop for it to take effect.
  61. XIt is interesting to see just how many colour servers
  62. Xare broken as regards tiling and stippling alignment when using this file.
  63. X
  64. XAny comments/bug fixs/money, please send them to:
  65. X
  66. X        gary@torch.co.uk
  67. X
  68. XGary Henderson @ Torch Computers Ltd., Cambridge, UK.
  69. END_OF_FILE
  70. if test 2046 -ne `wc -c <'README'`; then
  71.     echo shar: \"'README'\" unpacked with wrong size!
  72. fi
  73. # end of 'README'
  74. fi
  75. if test -f 'Makefile' -a "${1}" != "-c" ; then 
  76.   echo shar: Will not clobber existing file \"'Makefile'\"
  77. else
  78. echo shar: Extracting \"'Makefile'\" \(397 characters\)
  79. sed "s/^X//" >'Makefile' <<'END_OF_FILE'
  80. X# Makefile for X Windows Version of alert/yorn/gs
  81. X
  82. XOOPT    =-O
  83. X
  84. XCFLAGS    =-DBSD $(OOPT) -I/usr/new/usr/include
  85. XLFLAGS    =-L/usr/new/usr/lib -lXaw -lXt -lX
  86. XBIN    =/usr/new/usr/bin
  87. X
  88. XOFILES    = main.o misc.o alert.o gs.o textmode.o
  89. X
  90. Xalert:    $(OFILES)
  91. X    $(CC) $(OFILES) -o alert $(LFLAGS)
  92. X
  93. Xinstall:
  94. X    rm -f $(BIN)/alert $(BIN)/yorn $(BIN)/gs
  95. X    cp alert $(BIN)
  96. X    ln $(BIN)/alert $(BIN)/yorn
  97. X    ln $(BIN)/alert $(BIN)/gs
  98. END_OF_FILE
  99. if test 397 -ne `wc -c <'Makefile'`; then
  100.     echo shar: \"'Makefile'\" unpacked with wrong size!
  101. fi
  102. # end of 'Makefile'
  103. fi
  104. if test -f 'Xdefaults' -a "${1}" != "-c" ; then 
  105.   echo shar: Will not clobber existing file \"'Xdefaults'\"
  106. else
  107. echo shar: Extracting \"'Xdefaults'\" \(1153 characters\)
  108. sed "s/^X//" >'Xdefaults' <<'END_OF_FILE'
  109. XXopentop*alertsym:/usr/include/X11/bitmaps/xlogo64
  110. XXopentop*yornsym:/usr/include/X11/bitmaps/woman
  111. XXopentop*alert/yorn.contents.background:Yellow
  112. XXopentop*alert/yorn.contents*foreground:Wheat
  113. XXopentop*alert/yorn*backgroundPixmap.foreground:White
  114. XXopentop*alert/yorn.contents.backgroundPixmap:/usr/include/X11/bitmaps/wingdogs
  115. XXopentop*alert/yorn.contents.text.backgroundPixmap:/usr/include/X11/bitmaps/woman
  116. XXopentop*alert/yorn*backgroundPixmap:/usr/include/X11/bitmaps/scales
  117. XXopentop*alert/yorn.contents.symbol.foreground:Blue
  118. XXopentop*alert/yorn.contents.symbol.backgroundPixmap.foreground:SeaGreen
  119. XXopentop*alert/yorn.contents.symbol.background:Cyan
  120. XXopentop*alert/yorn.contents.ok/yes button*foreground:Red
  121. XXopentop*alert/yorn.contents.ok/yes button.background:IndianRed
  122. XXopentop*alert/yorn.contents.no button*foreground:Green
  123. XXopentop*alert/yorn.contents.no button.background:LimeGreen
  124. XXopentop*alert/yorn.contents.text.foreground:White
  125. XXopentop*alert/yorn.contents.text.background:Magenta
  126. XXopentop*alert/yorn.contents.text.backgroundPixmap.foreground:MediumVioletRed
  127. XXopentop*alert/yorn*background:OrangeRed
  128. XXopentop*alert/yorn*foreground:Orange
  129. END_OF_FILE
  130. if test 1153 -ne `wc -c <'Xdefaults'`; then
  131.     echo shar: \"'Xdefaults'\" unpacked with wrong size!
  132. fi
  133. # end of 'Xdefaults'
  134. fi
  135. if test -f 'alert.bitmaps' -a "${1}" != "-c" ; then 
  136.   echo shar: Will not clobber existing file \"'alert.bitmaps'\"
  137. else
  138. echo shar: Extracting \"'alert.bitmaps'\" \(26317 characters\)
  139. sed "s/^X//" >'alert.bitmaps' <<'END_OF_FILE'
  140. X#define queryform_width 120
  141. X#define queryform_height 114
  142. Xstatic char queryform_bits[] = {
  143. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
  144. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
  145. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  146. X   0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  147. X   0x00, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  148. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00,
  149. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03,
  150. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  151. X   0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  152. X   0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  153. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00,
  154. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f,
  155. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  156. X   0xf8, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  157. X   0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  158. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0x00, 0x00,
  159. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x3f,
  160. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  161. X   0xfe, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  162. X   0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  163. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
  164. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
  165. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
  166. X   0xff, 0xe7, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  167. X   0x00, 0x00, 0x80, 0xff, 0xe7, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  168. X   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xc3, 0xff, 0x03, 0x00, 0x00,
  169. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xc3, 0xff,
  170. X   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
  171. X   0xff, 0x81, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  172. X   0x00, 0x00, 0xe0, 0xff, 0x81, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
  173. X   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0xff, 0x0f, 0x00, 0x00,
  174. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0xff,
  175. X   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
  176. X   0x7f, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  177. X   0x00, 0x00, 0xf8, 0x7f, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
  178. X   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0xfc, 0x3f, 0x00, 0x00,
  179. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0xfc,
  180. X   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
  181. X   0x1f, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  182. X   0x00, 0x00, 0xfe, 0x1f, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
  183. X   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0x00, 0x00,
  184. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0xf0,
  185. X   0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff,
  186. X   0x07, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  187. X   0x00, 0x80, 0xff, 0x07, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
  188. X   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xc0, 0xff, 0x03, 0x00,
  189. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xc0,
  190. X   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
  191. X   0x01, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  192. X   0x00, 0xe0, 0xff, 0x01, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00,
  193. X   0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00,
  194. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00,
  195. X   0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f,
  196. X   0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  197. X   0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00,
  198. X   0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xc0, 0xff, 0x03, 0xfc, 0x3f, 0x00,
  199. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xf0, 0xff, 0x0f,
  200. X   0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f,
  201. X   0xfc, 0xff, 0x3f, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  202. X   0x00, 0xfe, 0x1f, 0xfe, 0xff, 0x7f, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00,
  203. X   0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0xff, 0xff, 0xff, 0xf0, 0xff, 0x00,
  204. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0xff, 0xff, 0xff,
  205. X   0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x87,
  206. X   0xff, 0xc3, 0xff, 0xe1, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  207. X   0x80, 0xff, 0x87, 0xff, 0x00, 0xff, 0xe1, 0xff, 0x01, 0x00, 0x00, 0x00,
  208. X   0x00, 0x00, 0x00, 0xc0, 0xff, 0xc3, 0x7f, 0x00, 0xfe, 0xc3, 0xff, 0x03,
  209. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xc3, 0x3f, 0x00, 0xfc,
  210. X   0xc3, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xe1,
  211. X   0x1f, 0x00, 0xf8, 0x87, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  212. X   0xe0, 0xff, 0xe1, 0x1f, 0x00, 0xf8, 0x87, 0xff, 0x07, 0x00, 0x00, 0x00,
  213. X   0x00, 0x00, 0x00, 0xf0, 0xff, 0xe0, 0x0f, 0x00, 0xf0, 0x07, 0xff, 0x0f,
  214. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xe0, 0x0f, 0x00, 0xf0,
  215. X   0x07, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0xe0,
  216. X   0x0f, 0x00, 0xf0, 0x07, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  217. X   0xf8, 0x7f, 0xe0, 0x0f, 0x00, 0xf0, 0x07, 0xfe, 0x1f, 0x00, 0x00, 0x00,
  218. X   0x00, 0x00, 0x00, 0xfc, 0x3f, 0xc0, 0x07, 0x00, 0xf0, 0x07, 0xfc, 0x3f,
  219. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x80, 0x03, 0x00, 0xf0,
  220. X   0x07, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00,
  221. X   0x00, 0x00, 0xf8, 0x07, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  222. X   0xfe, 0x1f, 0x00, 0x00, 0x00, 0xf8, 0x07, 0xf8, 0x7f, 0x00, 0x00, 0x00,
  223. X   0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xfc, 0x03, 0xf0, 0xff,
  224. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0xfc,
  225. X   0x03, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00,
  226. X   0x00, 0x00, 0xff, 0x01, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80,
  227. X   0xff, 0x07, 0x00, 0x00, 0x80, 0xff, 0x01, 0xe0, 0xff, 0x01, 0x00, 0x00,
  228. X   0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0xe0, 0xff, 0x00, 0xc0, 0xff,
  229. X   0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0xf8, 0xff,
  230. X   0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00,
  231. X   0x00, 0xfc, 0x7f, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0,
  232. X   0xff, 0x01, 0x00, 0x00, 0xfe, 0x3f, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00,
  233. X   0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xff,
  234. X   0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0xff, 0x07,
  235. X   0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00,
  236. X   0x80, 0xff, 0x01, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8,
  237. X   0x7f, 0x00, 0x00, 0x80, 0xff, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00,
  238. X   0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0xfc,
  239. X   0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x80, 0x7f, 0x00,
  240. X   0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00,
  241. X   0x80, 0x7f, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfe,
  242. X   0x1f, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00,
  243. X   0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0xf0,
  244. X   0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x80, 0x7f, 0x00,
  245. X   0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00,
  246. X   0x80, 0x7f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x80, 0xff,
  247. X   0x07, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00,
  248. X   0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0xc0,
  249. X   0xff, 0x03, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x80, 0x7f, 0x00,
  250. X   0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00,
  251. X   0x00, 0x3f, 0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff,
  252. X   0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00,
  253. X   0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  254. X   0xff, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  255. X   0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00,
  256. X   0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xf8, 0x7f,
  257. X   0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00,
  258. X   0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00,
  259. X   0xfc, 0x3f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x80, 0x7f, 0x00,
  260. X   0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00,
  261. X   0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0xfe, 0x1f,
  262. X   0x00, 0x00, 0x00, 0x80, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00,
  263. X   0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x00,
  264. X   0xf0, 0xff, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00,
  265. X   0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0x00,
  266. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x80, 0xff, 0x07,
  267. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01,
  268. X   0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  269. X   0xc0, 0xff, 0x03, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  270. X   0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
  271. X   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff,
  272. X   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
  273. X   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  274. X   0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  275. X   0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
  276. X   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff,
  277. X   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
  278. X   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  279. X   0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  280. X   0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
  281. X   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff,
  282. X   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
  283. X   0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  284. X   0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  285. X   0xff, 0xff, 0xff, 0xff, 0xff, 0x01};
  286. X
  287. X#define warnform_width 120
  288. X#define warnform_height 114
  289. Xstatic char warnform_bits[] = {
  290. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00,
  291. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00,
  292. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  293. X   0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  294. X   0x00, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  295. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00,
  296. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03,
  297. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  298. X   0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  299. X   0x00, 0x00, 0x00, 0xe0, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  300. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0x00, 0x00,
  301. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x0f,
  302. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  303. X   0xf8, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  304. X   0x00, 0x00, 0x00, 0xf8, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  305. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x3f, 0x00, 0x00, 0x00,
  306. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0x3f,
  307. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  308. X   0xfe, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  309. X   0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  310. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00,
  311. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff,
  312. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80,
  313. X   0xff, 0xe7, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  314. X   0x00, 0x00, 0x80, 0xff, 0xe7, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
  315. X   0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xc3, 0xff, 0x03, 0x00, 0x00,
  316. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xc3, 0xff,
  317. X   0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0,
  318. X   0xff, 0x81, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  319. X   0x00, 0x00, 0xe0, 0xff, 0x81, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
  320. X   0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0xff, 0x0f, 0x00, 0x00,
  321. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0xff,
  322. X   0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8,
  323. X   0x7f, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  324. X   0x00, 0x00, 0xf8, 0x7f, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00,
  325. X   0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0xfc, 0x3f, 0x00, 0x00,
  326. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0xfc,
  327. X   0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe,
  328. X   0x1f, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  329. X   0x00, 0x00, 0xfe, 0x1f, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00,
  330. X   0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0xf0, 0xff, 0x00, 0x00,
  331. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0xf0,
  332. X   0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff,
  333. X   0x07, 0x7e, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  334. X   0x00, 0x80, 0xff, 0x07, 0xff, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00,
  335. X   0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0xff, 0xc1, 0xff, 0x03, 0x00,
  336. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x83, 0xff, 0xc1,
  337. X   0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff,
  338. X   0xc1, 0xff, 0x83, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  339. X   0x00, 0xe0, 0xff, 0xc1, 0xff, 0x83, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00,
  340. X   0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xe0, 0xff, 0x07, 0xff, 0x0f, 0x00,
  341. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xe0, 0xff, 0x07,
  342. X   0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f,
  343. X   0xf0, 0xff, 0x0f, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  344. X   0x00, 0xf8, 0x7f, 0xf0, 0xff, 0x0f, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00,
  345. X   0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xf8, 0xff, 0x1f, 0xfc, 0x3f, 0x00,
  346. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0xf8, 0xff, 0x1f,
  347. X   0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f,
  348. X   0xf8, 0xff, 0x1f, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  349. X   0x00, 0xfe, 0x1f, 0xf8, 0xff, 0x1f, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00,
  350. X   0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0xf8, 0xff, 0x1f, 0xf0, 0xff, 0x00,
  351. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0xf8, 0xff, 0x1f,
  352. X   0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x07,
  353. X   0xf8, 0xff, 0x1f, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  354. X   0x80, 0xff, 0x07, 0xf8, 0xff, 0x1f, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00,
  355. X   0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0xf8, 0xff, 0x1f, 0xc0, 0xff, 0x03,
  356. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0xf8, 0xff, 0x1f,
  357. X   0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01,
  358. X   0xf0, 0xff, 0x0f, 0x80, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  359. X   0xe0, 0xff, 0x01, 0xf0, 0xff, 0x0f, 0x80, 0xff, 0x07, 0x00, 0x00, 0x00,
  360. X   0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0xf0, 0xff, 0x0f, 0x00, 0xff, 0x0f,
  361. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0xf0, 0xff, 0x0f,
  362. X   0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00,
  363. X   0xe0, 0xff, 0x07, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  364. X   0xf8, 0x7f, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00,
  365. X   0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0xe0, 0xff, 0x07, 0x00, 0xfc, 0x3f,
  366. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0xe0, 0xff, 0x07,
  367. X   0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00,
  368. X   0xc0, 0xff, 0x03, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  369. X   0xfe, 0x1f, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00,
  370. X   0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0x03, 0x00, 0xf0, 0xff,
  371. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0xc0, 0xff, 0x03,
  372. X   0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00,
  373. X   0x80, 0xff, 0x01, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80,
  374. X   0xff, 0x07, 0x00, 0x80, 0xff, 0x01, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00,
  375. X   0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x80, 0xff, 0x01, 0x00, 0xc0, 0xff,
  376. X   0x03, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x80, 0xff, 0x01,
  377. X   0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00,
  378. X   0x00, 0xff, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0,
  379. X   0xff, 0x01, 0x00, 0x00, 0xff, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00,
  380. X   0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff,
  381. X   0x0f, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0xff, 0x00,
  382. X   0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00,
  383. X   0x00, 0x7e, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0xf8,
  384. X   0x7f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00,
  385. X   0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xfc,
  386. X   0x3f, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x7e, 0x00,
  387. X   0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00,
  388. X   0x00, 0x3c, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xfe,
  389. X   0x1f, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00,
  390. X   0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xf0,
  391. X   0xff, 0x00, 0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x18, 0x00,
  392. X   0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00,
  393. X   0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00, 0x80, 0xff,
  394. X   0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00,
  395. X   0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0,
  396. X   0xff, 0x03, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00,
  397. X   0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x00, 0x00,
  398. X   0x00, 0x3c, 0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0xe0, 0xff,
  399. X   0x01, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x80, 0xff, 0x07, 0x00,
  400. X   0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x00,
  401. X   0xff, 0x0f, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x00, 0x00, 0x80, 0xff, 0x01,
  402. X   0x00, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0x00,
  403. X   0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0xf8, 0x7f,
  404. X   0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0x00,
  405. X   0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00,
  406. X   0xfc, 0x3f, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x03,
  407. X   0x00, 0x00, 0x00, 0xfc, 0x3f, 0x00, 0x00, 0xfe, 0x1f, 0x00, 0x00, 0x00,
  408. X   0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00, 0x00, 0xfe, 0x1f,
  409. X   0x00, 0x00, 0x00, 0x80, 0xff, 0x01, 0x00, 0x00, 0x00, 0xf8, 0x7f, 0x00,
  410. X   0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00,
  411. X   0xf0, 0xff, 0x00, 0x00, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00,
  412. X   0x00, 0x00, 0x00, 0xf0, 0xff, 0x00, 0x80, 0xff, 0x07, 0x00, 0x00, 0x00,
  413. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01, 0x80, 0xff, 0x07,
  414. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0x01,
  415. X   0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  416. X   0xc0, 0xff, 0x03, 0xc0, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  417. X   0x00, 0x00, 0x00, 0xc0, 0xff, 0x03, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff,
  418. X   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff,
  419. X   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07,
  420. X   0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  421. X   0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  422. X   0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff,
  423. X   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff,
  424. X   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f,
  425. X   0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  426. X   0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  427. X   0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff,
  428. X   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0xf0, 0xff, 0xff,
  429. X   0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f,
  430. X   0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  431. X   0xff, 0xff, 0x07, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
  432. X   0xff, 0xff, 0xff, 0xff, 0xff, 0x01};
  433. X
  434. X#define okform_width 40
  435. X#define okform_height 48
  436. Xstatic char okform_bits[] = {
  437. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  438. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  439. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  440. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  441. X   0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00,
  442. X   0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff,
  443. X   0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff,
  444. X   0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00,
  445. X   0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  446. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  447. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff,
  448. X   0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff,
  449. X   0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00,
  450. X   0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff,
  451. X   0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0x00,
  452. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  453. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  454. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  455. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  456. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  457. X
  458. X#define tickform_width 40
  459. X#define tickform_height 48
  460. Xstatic char tickform_bits[] = {
  461. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  462. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  463. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  464. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00,
  465. X   0xc0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01,
  466. X   0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00,
  467. X   0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x3c,
  468. X   0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00,
  469. X   0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00,
  470. X   0x0f, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00,
  471. X   0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00, 0xc0, 0x03, 0x00, 0x00, 0x00,
  472. X   0xe0, 0x01, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x00,
  473. X   0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00,
  474. X   0x00, 0x78, 0x00, 0x00, 0x00, 0x0f, 0x3c, 0x00, 0x00, 0x00, 0x0f, 0x3c,
  475. X   0x00, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x00, 0x00,
  476. X   0x00, 0x3c, 0x0f, 0x00, 0x00, 0x00, 0x3c, 0x0f, 0x00, 0x00, 0x00, 0xf8,
  477. X   0x07, 0x00, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00,
  478. X   0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00,
  479. X   0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  480. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  481. X
  482. X#define crossform_width 40
  483. X#define crossform_height 48
  484. Xstatic char crossform_bits[] = {
  485. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  486. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  487. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0xf0, 0x00, 0x00,
  488. X   0x3c, 0x00, 0xf0, 0x00, 0x00, 0x78, 0x00, 0x78, 0x00, 0x00, 0x78, 0x00,
  489. X   0x78, 0x00, 0x00, 0xf0, 0x00, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x3c, 0x00,
  490. X   0x00, 0xe0, 0x01, 0x1e, 0x00, 0x00, 0xe0, 0x01, 0x1e, 0x00, 0x00, 0xc0,
  491. X   0x03, 0x0f, 0x00, 0x00, 0xc0, 0x03, 0x0f, 0x00, 0x00, 0x80, 0x87, 0x07,
  492. X   0x00, 0x00, 0x80, 0x87, 0x07, 0x00, 0x00, 0x00, 0xcf, 0x03, 0x00, 0x00,
  493. X   0x00, 0xcf, 0x03, 0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0xfe,
  494. X   0x01, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00,
  495. X   0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00,
  496. X   0xfc, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x01,
  497. X   0x00, 0x00, 0x00, 0xfe, 0x01, 0x00, 0x00, 0x00, 0xcf, 0x03, 0x00, 0x00,
  498. X   0x00, 0xcf, 0x03, 0x00, 0x00, 0x80, 0x87, 0x07, 0x00, 0x00, 0x80, 0x87,
  499. X   0x07, 0x00, 0x00, 0xc0, 0x03, 0x0f, 0x00, 0x00, 0xc0, 0x03, 0x0f, 0x00,
  500. X   0x00, 0xe0, 0x01, 0x1e, 0x00, 0x00, 0xe0, 0x01, 0x1e, 0x00, 0x00, 0xf0,
  501. X   0x00, 0x3c, 0x00, 0x00, 0xf0, 0x00, 0x3c, 0x00, 0x00, 0x78, 0x00, 0x78,
  502. X   0x00, 0x00, 0x78, 0x00, 0x78, 0x00, 0x00, 0x3c, 0x00, 0xf0, 0x00, 0x00,
  503. X   0x3c, 0x00, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  504. X   0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
  505. X
  506. END_OF_FILE
  507. if test 26317 -ne `wc -c <'alert.bitmaps'`; then
  508.     echo shar: \"'alert.bitmaps'\" unpacked with wrong size!
  509. fi
  510. # end of 'alert.bitmaps'
  511. fi
  512. if test -f 'alert.c' -a "${1}" != "-c" ; then 
  513.   echo shar: Will not clobber existing file \"'alert.c'\"
  514. else
  515. echo shar: Extracting \"'alert.c'\" \(19161 characters\)
  516. sed "s/^X//" >'alert.c' <<'END_OF_FILE'
  517. X/*
  518. XCopyright 1988 Torch Computers Ltd.
  519. X
  520. XPermission to use, copy, modify, and otherwise generally do what you like
  521. Xwith this software is hereby granted provided that the above copyright notice
  522. Xappears in all copies.
  523. X
  524. XTorch disclaims all warranties implied or expressed with regard to this
  525. Xsoftware.  In no event shall Torch be liable for any damages arising from
  526. Xthis use of software.
  527. X*/
  528. X
  529. X/********************************************************
  530. X*                            *
  531. X*  Title   Yorn, Gs and Alert                *
  532. X*                            *
  533. X*  File       : alert.c                    *
  534. X*  Author  : Gary Henderson                *
  535. X*            Mark Howells                               *
  536. X*  Date       : 27th Sep 1988.                *
  537. X*  Purpose : Create and display the widgets for the     *
  538. X*            yorn and alert boxes.                      *
  539. X*                            *
  540. X*********************************************************/
  541. X
  542. X/*------Include files-----------------------------------*/
  543. X
  544. X#include <stdio.h>
  545. X#include <X11/Xlib.h>
  546. X#include <X11/Xos.h>
  547. X#include <X11/Xutil.h>
  548. X#include <X11/StringDefs.h>
  549. X#include <X11/Intrinsic.h>
  550. X#include <X11/Form.h>
  551. X#include <X11/Core.h>
  552. X#include <X11/Shell.h>
  553. X#include <X11/Label.h>
  554. X#include <X11/Command.h>
  555. X
  556. X#include "alert.bitmaps"
  557. X
  558. X/*------Forward delarations-----------------------------*/
  559. X
  560. Xstatic void Nack();
  561. Xstatic void OkAck();
  562. Xstatic void AlertExposures();
  563. Xstatic void AlertText();
  564. Xstatic Pixmap LoadSymbol ();
  565. Xextern long time ();
  566. X
  567. Xtypedef struct {
  568. X    unsigned int    width, height;
  569. X    Pixmap          id;
  570. X    Pixel           foreground, background;
  571. X} symbol;
  572. X
  573. X/*------Constants and macros----------------------------*/
  574. X
  575. X#define ALBOX1X        150
  576. X#define ALBOX2X        250
  577. X
  578. X#define CROSS    1
  579. X#define CHECK    0
  580. X#define NOREPLY 100
  581. X
  582. X#ifndef MIN
  583. X#define MIN(a,b) ((a) > (b) ? (b) : (a))
  584. X#endif MIN
  585. X
  586. X#define ALTEXTWIDTH MIN ((sysfont->max_bounds.width * 40), \
  587. X                          root_width / 5)
  588. X
  589. X#define ALTEXTHEIGHT     ((sysfont->max_bounds.descent + \
  590. X                          sysfont->max_bounds.ascent) * 6)
  591. X
  592. X#define ALONX             ((root_width / 5 + rand () % 48))
  593. X
  594. X#define ALONY             ((root_height / 5 + rand () % 48))
  595. X
  596. X/*------Exported variables/functions--------------------*/
  597. X
  598. Xint ackreply = CROSS;
  599. XWidget alertwidget;
  600. X
  601. X/*------Imported variables/functions--------------------*/
  602. X
  603. Xextern Widget a_widget;
  604. Xextern XFontStruct *sysfont;
  605. Xextern unsigned int root_width, root_height;
  606. Xextern Display * display;
  607. Xextern Window root_window;
  608. Xextern int screen_number;
  609. Xextern Screen * screen;
  610. Xextern Boolean zoom;
  611. Xextern char *yornsym_name, *alertsym_name, *oksym_name, *ticksym_name,
  612. X            *crosssym_name;
  613. Xextern Cursor arrow_cursor;
  614. X
  615. Xextern void ReadWidgetColours ();
  616. X
  617. X/*------Static variables--------------------------------*/
  618. X
  619. Xstatic char *curtext;
  620. Xstatic Widget triangle, button1, button2, textwidget;
  621. Xstatic GC alert_gc, text_gc;
  622. Xstatic symbol warn, query, tick, cross, ok;
  623. Xstatic symbol *triangle_symbol, *button1_symbol, *button2_symbol;
  624. X
  625. X/*
  626. X                            *****************
  627. X                            *        *
  628. X                            *   INITALERT    *
  629. X                            *        *
  630. X                            *****************
  631. X-------------------------------------------------------------------------
  632. X| Initialise the widgets for the yorn and alert boxes.                    |
  633. X-------------------------------------------------------------------------
  634. X*/
  635. Xvoid InitAlert (geometry)
  636. Xchar * geometry;
  637. X{
  638. X    Widget formwidget;
  639. X    Arg args[10];
  640. X    
  641. X    static XtCallbackRec ackbacks[] = {
  642. X        {OkAck, NULL},
  643. X        {NULL, NULL},
  644. X    };
  645. X    
  646. X    static XtCallbackRec nackbacks[] = {
  647. X    {Nack, NULL},
  648. X    {NULL, NULL},
  649. X    };
  650. X    Pixel foreground, background;
  651. X
  652. X#ifdef BSD    
  653. X    (void) srand ((int) time ((long *) 0));
  654. X#endif BSD
  655. X
  656. X#if defined(UNISOFTV) || defined(SYSV)
  657. X    (void) srand ((unsigned int) time ((long *) 0));
  658. X#endif /* UNISOFTV || SYSV */
  659. X
  660. X    alert_gc = XCreateGC (display, root_window, 0L, (XGCValues *) 0);
  661. X    text_gc = XCreateGC (display, root_window, 0L, (XGCValues *) 0);
  662. X    
  663. X    XSetGraphicsExposures (display, alert_gc, False);
  664. X    XSetFillStyle (display, alert_gc, FillStippled);
  665. X
  666. X    XSetGraphicsExposures (display, text_gc, False);
  667. X
  668. X    XtSetArg (args[0], XtNx, ALONX);
  669. X    XtSetArg (args[1], XtNy, ALONY);
  670. X    XtSetArg (args[2], XtNgeometry, geometry);
  671. X    
  672. X    /* An alert (or yorn) box is a popup widget, its exact type depends
  673. X       on the zoom resource option */
  674. X
  675. X    alertwidget = XtCreatePopupShell ("alert/yorn", 
  676. X                                      zoom ? topLevelShellWidgetClass :
  677. X                             overrideShellWidgetClass, 
  678. X                      a_widget,
  679. X                      args,
  680. X                      geometry ? 3 : 2);
  681. X                    
  682. X    formwidget= XtCreateManagedWidget ("contents",
  683. X                                      formWidgetClass,
  684. X                      alertwidget,
  685. X                      (ArgList) 0,
  686. X                      0);
  687. X
  688. X   /* Now a label widget for the /\   or    /\ 
  689. X                                /  \       /  \
  690. X                   / ?  \     / !  \
  691. X                   ------     ------ 
  692. X      (a label widget has foreground colour that is used for the symbol's
  693. X      other colour) */
  694. X
  695. X    XtSetArg (args[0], XtNhorizDistance, 10);
  696. X    XtSetArg (args[1], XtNvertDistance, 10);
  697. X    XtSetArg (args[2], XtNresizable, False);
  698. X    XtSetArg (args[3], XtNborderWidth, 0);
  699. X    XtSetArg (args[4], XtNlabel, "\0");
  700. X    
  701. X    triangle = XtCreateManagedWidget ("symbol", labelWidgetClass, 
  702. X                                        formwidget, args, 5);
  703. X
  704. X    query.width = queryform_width;
  705. X    query.height = queryform_height;
  706. X    
  707. X    query.id = LoadSymbol (triangle, 
  708. X                           queryform_bits, 
  709. X               yornsym_name, 
  710. X               &query.width,
  711. X               &query.height,
  712. X               &query.foreground,
  713. X               &query.background);
  714. X
  715. X    warn.width = warnform_width;
  716. X    warn.height = warnform_height;
  717. X    
  718. X    warn.id  = LoadSymbol (triangle,
  719. X                           warnform_bits, 
  720. X               alertsym_name,
  721. X               &warn.width,
  722. X               &warn.height,
  723. X               &warn.foreground,
  724. X               &warn.background);
  725. X
  726. X    XtSetArg (args[0], XtNwidth, warn.width > query.width ? 
  727. X                                warn.width : query.width);
  728. X    XtSetArg (args[1], XtNheight, warn.height > query.height ? 
  729. X                                 warn.height : query.height);
  730. X
  731. X    XtSetValues (triangle, args, 2);
  732. X    
  733. X    XtAddEventHandler (triangle, 
  734. X                      StructureNotifyMask | ExposureMask,
  735. X              True,
  736. X              AlertExposures,
  737. X              (caddr_t) 0);
  738. X
  739. X    /* Now a widget for the text.  Use a label widget (because it has a
  740. X       foreground colour) and format the text ourselves. */
  741. X
  742. X    XtSetArg (args[0], XtNborderWidth, 0);
  743. X    XtSetArg (args[1], XtNwidth, ALTEXTWIDTH);
  744. X    XtSetArg (args[2], XtNheight, ALTEXTHEIGHT);
  745. X    XtSetArg (args[3], XtNresizable, True);
  746. X    XtSetArg (args[4], XtNhorizDistance, 5);
  747. X    XtSetArg (args[5], XtNvertDistance, 1);
  748. X    XtSetArg (args[6], XtNfromHoriz, triangle);
  749. X    XtSetArg (args[7], XtNlabel, "\0");
  750. X    
  751. X    textwidget= XtCreateManagedWidget ("text", labelWidgetClass, 
  752. X                                        formwidget, args, 8);
  753. X
  754. X    ReadWidgetColours (textwidget, &foreground, &background);
  755. X
  756. X    XSetForeground (display, text_gc, foreground);
  757. X    XSetBackground (display, text_gc, background);
  758. X    XSetFont (display, text_gc, sysfont->fid);
  759. X    
  760. X    XtAddEventHandler (textwidget, 
  761. X                      StructureNotifyMask | ExposureMask,
  762. X              True,
  763. X              AlertText,
  764. X              (caddr_t) &curtext);
  765. X
  766. X    /* And finally (Esther) two command buttons */
  767. X
  768. X    XtSetArg (args[0], XtNhorizDistance, ALBOX1X);
  769. X    XtSetArg (args[1], XtNvertDistance, 1);
  770. X    XtSetArg (args[2], XtNresizable, True);
  771. X    XtSetArg (args[3], XtNfromVert, textwidget);
  772. X    XtSetArg (args[4], XtNcallback, ackbacks);
  773. X    XtSetArg (args[5], XtNlabel, "\0");
  774. X   
  775. X    button1 = XtCreateManagedWidget("ok/yes button",
  776. X                                    commandWidgetClass,
  777. X                    formwidget,
  778. X                    args,
  779. X                    6);
  780. X                 
  781. X    ok.width = okform_width;
  782. X    ok.height = okform_height;
  783. X    
  784. X    ok.id = LoadSymbol (button1, 
  785. X                        okform_bits, 
  786. X                oksym_name, 
  787. X                &ok.width, 
  788. X                &ok.height,
  789. X                &ok.foreground,
  790. X                &ok.background);
  791. X             
  792. X    tick.width = tickform_width;
  793. X    tick.height = tickform_height;
  794. X    
  795. X    tick.id = LoadSymbol (button1, 
  796. X                          tickform_bits, 
  797. X              ticksym_name, 
  798. X              &tick.width,
  799. X              &tick.height,
  800. X              &tick.foreground,
  801. X              &tick.background);
  802. X
  803. X    XtSetArg (args[0], XtNwidth, ok.width > tick.width ? 
  804. X                                 ok.width : tick.width);
  805. X    XtSetArg (args[1], XtNheight, ok.height > tick.height ? 
  806. X                                  ok.height : tick.height);
  807. X
  808. X    XtSetValues (button1, args, 2);
  809. X    
  810. X    XtAddEventHandler (button1, 
  811. X                      StructureNotifyMask | LeaveWindowMask | ExposureMask,
  812. X              True,
  813. X              AlertExposures,
  814. X              (caddr_t) 1);
  815. X
  816. X    XtSetArg (args[0], XtNhorizDistance, ALBOX2X);
  817. X    XtSetArg (args[1], XtNvertDistance, 1);
  818. X    XtSetArg (args[2], XtNresizable, True);
  819. X    XtSetArg (args[3], XtNfromVert, textwidget);
  820. X    XtSetArg (args[4], XtNcallback, nackbacks);
  821. X    XtSetArg (args[5], XtNlabel, "\0");
  822. X   
  823. X    button2 = XtCreateManagedWidget("no button",
  824. X                                    commandWidgetClass,
  825. X                    formwidget,
  826. X                    args,
  827. X                    6);
  828. X    
  829. X    cross.height = crossform_height;
  830. X    cross.width = crossform_width;
  831. X    
  832. X    cross.id = LoadSymbol (button2,
  833. X                           crossform_bits,
  834. X               crosssym_name,
  835. X               &cross.width,
  836. X               &cross.height,
  837. X               &cross.foreground,
  838. X               &cross.background);
  839. X    
  840. X    XtSetArg (args[0], XtNwidth, cross.width);
  841. X    XtSetArg (args[1], XtNheight, cross.height);
  842. X
  843. X    XtSetValues (button2, args, 2);
  844. X    
  845. X    XtAddEventHandler (button2,
  846. X                      StructureNotifyMask | LeaveWindowMask | ExposureMask,
  847. X              True,
  848. X              AlertExposures,
  849. X              (caddr_t) 2);
  850. X
  851. X    XtRealizeWidget (alertwidget);
  852. X}
  853. X/*
  854. X                            *****************
  855. X                            *        *
  856. X                            *     OKACK    *
  857. X                            *     NACK    *
  858. X                            *****************
  859. X-------------------------------------------------------------------------
  860. X| One of the buttons has been pressed by the user.                      |
  861. X-------------------------------------------------------------------------
  862. X*/
  863. X
  864. X/*ARGSUSED*/
  865. Xstatic void OkAck (widget, client_data, call_data)
  866. XWidget widget;
  867. Xcaddr_t client_data,call_data;
  868. X{
  869. X    ackreply = CHECK;
  870. X    XtPopdown (alertwidget);
  871. X}
  872. X
  873. X/*ARGSUSED*/
  874. Xstatic void Nack (widget, client_data, call_data)
  875. XWidget widget;
  876. Xcaddr_t client_data,call_data;
  877. X{
  878. X    ackreply = CROSS;
  879. X    XtPopdown (alertwidget);
  880. X}
  881. X
  882. X/*
  883. X                            *****************
  884. X                            *        *
  885. X                            *    ALERT    *
  886. X                            *        *
  887. X                            *****************
  888. X-------------------------------------------------------------------------
  889. X| Popup an alert box and wait for the user to click the acknowlegde     |
  890. X| button.                                                               |
  891. X-------------------------------------------------------------------------
  892. X*/
  893. Xvoid Alert (text)
  894. Xchar *text;
  895. X{
  896. X    XEvent xevent;
  897. X    
  898. X    ackreply = NOREPLY;
  899. X    DrawAlert (&warn, &ok, (symbol *) 0, text);
  900. X    
  901. X    while (ackreply == NOREPLY)
  902. X    {
  903. X        XtNextEvent (&xevent);
  904. X    XtDispatchEvent (&xevent);
  905. X    }
  906. X
  907. X    exit (0);
  908. X}
  909. X
  910. X/*
  911. X                            *****************
  912. X                            *        *
  913. X                            *     YORN    *
  914. X                            *        *
  915. X                            *****************
  916. X-------------------------------------------------------------------------
  917. X| Popup a yorn box and wait for the user to click in the tick or cross    |
  918. X| button and return the answer to the calling program.                    |
  919. X-------------------------------------------------------------------------
  920. X*/
  921. X
  922. Xvoid Yorn (text)
  923. Xchar *text;
  924. X{
  925. X    XEvent xevent;
  926. X
  927. X    ackreply = NOREPLY;
  928. X    DrawAlert (&query, &tick, &cross, text);
  929. X
  930. X    while (ackreply == NOREPLY)
  931. X    {
  932. X        XtNextEvent (&xevent);
  933. X    XtDispatchEvent (&xevent);
  934. X    }
  935. X
  936. X    exit (ackreply);
  937. X}
  938. X
  939. X/*
  940. X                            *****************
  941. X                            *        *
  942. X                            *   DRAWALERT    *
  943. X                            *        *
  944. X                            *****************
  945. X-------------------------------------------------------------------------
  946. X| Note what symbols to use and how many buttons to show, then actually    |
  947. X| popup the widget.                                                     |
  948. X-------------------------------------------------------------------------
  949. X*/
  950. XDrawAlert (tri_symbol, first_button, second_button, text)
  951. Xsymbol *tri_symbol, *first_button, *second_button;
  952. Xchar *text;
  953. X{
  954. X    if (second_button)
  955. X           XtMapWidget (button2);
  956. X    else
  957. X           XtUnmapWidget (button2);
  958. X
  959. X    triangle_symbol = tri_symbol;
  960. X    button1_symbol = first_button;
  961. X    button2_symbol = second_button;
  962. X    curtext = text;
  963. X
  964. X    XtPopup (alertwidget, XtGrabNone);
  965. X    
  966. X    XDefineCursor (display, XtWindow (alertwidget), arrow_cursor);
  967. X
  968. X    XFlush (display);
  969. X}
  970. X
  971. X/*
  972. X                            *****************
  973. X                            *        *
  974. X                            * ALERTEXPOSURES*
  975. X                            *        *
  976. X                            *****************
  977. X-------------------------------------------------------------------------
  978. X| Exposure and reconfigure event processing for widgets containing      |
  979. X| symbols.  Redraws the symbols when necessary.                            |
  980. X-------------------------------------------------------------------------
  981. X*/
  982. Xstatic void AlertExposures (widget, which1, event)
  983. XWidget widget;
  984. Xcaddr_t which1;
  985. XXEvent *event;
  986. X{
  987. X    XRectangle rect;
  988. X    Arg args[2];
  989. X    int width;
  990. X    int height;
  991. X    symbol *sym;
  992. X    
  993. X    if (!XtIsRealized (widget))
  994. X    return;
  995. X
  996. X    XtSetArg (args[0], XtNwidth, &width);
  997. X    XtSetArg (args[1], XtNheight, &height);
  998. X
  999. X    XtGetValues (widget, args, 2);
  1000. X
  1001. X    switch (event->type)
  1002. X    {
  1003. X    case  Expose:    rect.x = event->xexpose.x;
  1004. X            rect.y = event->xexpose.y;
  1005. X            rect.width = event->xexpose.width;
  1006. X            rect.height = event->xexpose.height;
  1007. X            break;
  1008. X    
  1009. X    case  GraphicsExpose:    
  1010. X                    rect.x = event->xgraphicsexpose.x;
  1011. X            rect.y = event->xgraphicsexpose.y;
  1012. X            rect.width = event->xgraphicsexpose.width;
  1013. X            rect.height = event->xgraphicsexpose.height;
  1014. X            break;
  1015. X    
  1016. X    case  ConfigureNotify: 
  1017. X                    XClearWindow (display, XtWindow (widget));
  1018. X            
  1019. X            /* Deliberate fall through ... */
  1020. X    
  1021. X    case  LeaveNotify:   
  1022. X                    rect.x = 0;
  1023. X            rect.y = 0;
  1024. X            rect.width = width;
  1025. X            rect.height = height;
  1026. X            break;
  1027. X        default: 
  1028. X                    return;
  1029. X    }
  1030. X    
  1031. X    XSetClipRectangles (display, alert_gc, 0, 0, &rect, 1, Unsorted);
  1032. X
  1033. X    switch ((int) which1)
  1034. X    {
  1035. X        case 0:            sym = triangle_symbol;
  1036. X                    break;
  1037. X
  1038. X        case 1:            sym = button1_symbol;
  1039. X                    break;
  1040. X
  1041. X        case 2:            sym = button2_symbol;
  1042. X                    break;
  1043. X
  1044. X    default:        return;
  1045. X    }
  1046. X
  1047. X    if (sym == (symbol *) 0)
  1048. X        return;
  1049. X    
  1050. X    XSetForeground (display, alert_gc, sym->foreground);
  1051. X    XSetBackground (display, alert_gc, sym->background);
  1052. X    XSetStipple (display, alert_gc, sym->id);
  1053. X    XSetTSOrigin (display, 
  1054. X                  alert_gc, 
  1055. X          (width - (int) sym->width) / 2,
  1056. X          (height - (int) sym->height) / 2);
  1057. X                    
  1058. X    XFillRectangle (display,
  1059. X                    XtWindow (widget),
  1060. X            alert_gc,
  1061. X            (width - (int) sym->width) / 2,
  1062. X            (height - (int) sym->height) / 2,
  1063. X            sym->width,
  1064. X            sym->height);
  1065. X}
  1066. X
  1067. X/*
  1068. X                            *****************
  1069. X                            *        *
  1070. X                            *   ALERTTEXT    *
  1071. X                            *        *
  1072. X                            *****************
  1073. X-------------------------------------------------------------------------
  1074. X| Draw the alert or yorn text in the text widget.  Format (word wrap)    |
  1075. X| the text to best fit the curent widget size.                            | 
  1076. X-------------------------------------------------------------------------
  1077. X*/
  1078. Xstatic void AlertText (widget, str, event)
  1079. XWidget widget;
  1080. Xcaddr_t str;
  1081. XXEvent *event;
  1082. X{
  1083. X    register char *text = *(char **) str;
  1084. X    register pos, ppos, slen, textx, texty;
  1085. X    int text_width;
  1086. X    
  1087. X    XRectangle rect;
  1088. X    Arg args[2];
  1089. X    int width, height;
  1090. X
  1091. X    XtSetArg (args[0], XtNwidth, &width);
  1092. X    XtSetArg (args[1], XtNheight, &height);
  1093. X    XtGetValues (widget, args, 2);
  1094. X
  1095. X    pos   = 0;            /* position of next 'space' in string */
  1096. X    ppos  = 0;            /* previous of a 'space' in string */
  1097. X    slen  = strlen (text);    /* length of string   */
  1098. X    textx = 10;                /* Current x position, (indent 1st line) */
  1099. X    texty = 10;                /* Current y position */
  1100. X
  1101. X    /* Work out clip rectangle */
  1102. X
  1103. X    switch (event->type) 
  1104. X    {
  1105. X        case Expose:    rect.x = event->xexpose.x;
  1106. X                rect.y = event->xexpose.y;
  1107. X                rect.width = event->xexpose.width;
  1108. X                rect.height = event->xexpose.height;
  1109. X                break;
  1110. X
  1111. X        case GraphicsExpose:
  1112. X                    rect.x = event->xgraphicsexpose.x;
  1113. X                rect.y = event->xgraphicsexpose.y;
  1114. X                rect.width = event->xgraphicsexpose.width;
  1115. X                rect.height = event->xgraphicsexpose.height;
  1116. X                break;
  1117. X
  1118. X        case ConfigureNotify:
  1119. X                        XClearWindow (display, XtWindow(widget));
  1120. X                    rect.x = 0;
  1121. X                rect.y = 0;
  1122. X                rect.width = width;
  1123. X                rect.height = height;
  1124. X                break;
  1125. X
  1126. X        default:        return;
  1127. X    }
  1128. X
  1129. X    XSetClipRectangles (display, text_gc, 0, 0, &rect, 1, Unsorted);
  1130. X    
  1131. X    while (pos < slen)
  1132. X    {
  1133. X        /* Wrap lines at spaces if possible */
  1134. X
  1135. X          while (pos < slen)
  1136. X            if (*(text + pos++) == ' ')
  1137. X                break;
  1138. X
  1139. X          text_width = XTextWidth (sysfont, text + ppos,pos - ppos);
  1140. X
  1141. X        /* If this would run over end when printed, wrap!! */
  1142. X
  1143. X          if (textx + text_width >= width)
  1144. X          {
  1145. X            texty += sysfont->ascent + sysfont->descent;
  1146. X            textx = 10;
  1147. X          }
  1148. X
  1149. X        /* print sub-string */
  1150. X
  1151. X        /* If this would still run over end when printed, draw a char at a time */
  1152. X
  1153. X          if (textx + text_width >= width)
  1154. X          {
  1155. X            while ((textx + XTextWidth(sysfont,text + ppos,1) <= width) && 
  1156. X                ppos <= pos)
  1157. X            {
  1158. X                XDrawString (display,
  1159. X                             XtWindow (widget),
  1160. X                             text_gc,
  1161. X                             textx,
  1162. X                     texty + sysfont->ascent,
  1163. X                             text + ppos,
  1164. X                             1);
  1165. X                
  1166. X        textx += XTextWidth (sysfont,text + ppos,1);
  1167. X                ppos ++;
  1168. X            }
  1169. X          }
  1170. X          else
  1171. X        {
  1172. X            XDrawString (display,
  1173. X                 XtWindow (widget),
  1174. X                 text_gc,
  1175. X                 textx,
  1176. X                 texty + sysfont->ascent,
  1177. X                 text + ppos,
  1178. X                 pos - ppos);
  1179. X
  1180. X            textx += text_width;
  1181. X
  1182. X            /* Update ppos */
  1183. X
  1184. X            ppos = pos;
  1185. X    }
  1186. X    }
  1187. X}
  1188. X
  1189. X/*
  1190. X                            *****************
  1191. X                            *        *
  1192. X                            *   LOADSYMBOL    *
  1193. X                            *        *
  1194. X                            *****************
  1195. X-------------------------------------------------------------------------
  1196. X| Download a bitmap to the server to use as one of the symbols for the    |
  1197. X| yorn or alert boxes.                                                    |
  1198. X| Returns the pixmap XID, two colours (the pixel values) to use when    |
  1199. X| drawing the symbol and modifies the width and height values if a      |
  1200. X| different bitmap (from a file) has been used.                            |
  1201. X-------------------------------------------------------------------------
  1202. X*/
  1203. Xstatic Pixmap LoadSymbol (widget, bits, name, width, height, fore, back)
  1204. XWidget widget;
  1205. Xchar *bits, *name;
  1206. Xunsigned int *width, *height;
  1207. XPixel *fore, *back;
  1208. X{
  1209. X    Pixmap pixmap;
  1210. X    unsigned int wid, hei;
  1211. X    
  1212. X    ReadWidgetColours (widget, fore, back);
  1213. X    
  1214. X    /* If a name of an alternative bitmap file has been supplied, try to
  1215. X       read it.  If that fails for any reason, or no name is given, download
  1216. X       the default bitmap */
  1217. X       
  1218. X    if (name)
  1219. X        if (XReadBitmapFile (display, 
  1220. X                         root_window,
  1221. X                  name,
  1222. X                 &wid,
  1223. X                 &hei,
  1224. X                 &pixmap,
  1225. X                 (int *) 0, 
  1226. X                 (int *) 0) == BitmapSuccess)
  1227. X        {
  1228. X        *width = wid;
  1229. X        *height = hei;
  1230. X
  1231. X        return pixmap;
  1232. X    }
  1233. X
  1234. X    return XCreateBitmapFromData (display, root_window, bits, *width, *height);
  1235. X}
  1236. END_OF_FILE
  1237. if test 19161 -ne `wc -c <'alert.c'`; then
  1238.     echo shar: \"'alert.c'\" unpacked with wrong size!
  1239. fi
  1240. # end of 'alert.c'
  1241. fi
  1242. if test -f 'classname.h' -a "${1}" != "-c" ; then 
  1243.   echo shar: Will not clobber existing file \"'classname.h'\"
  1244. else
  1245. echo shar: Extracting \"'classname.h'\" \(417 characters\)
  1246. sed "s/^X//" >'classname.h' <<'END_OF_FILE'
  1247. X/*
  1248. XCopyright 1988 Torch Computers Ltd.
  1249. X
  1250. XPermission to use, copy, modify, and otherwise generally do what you like
  1251. Xwith this software is hereby granted provided that the above copyright notice
  1252. Xappears in all copies.
  1253. X
  1254. XTorch disclaims all warranties implied or expressed with regard to this
  1255. Xsoftware.  In no event shall Torch be liable for any damages arising from
  1256. Xthis use of software.
  1257. X*/
  1258. X
  1259. X#define CLASSNAME "Xopentop"
  1260. END_OF_FILE
  1261. if test 417 -ne `wc -c <'classname.h'`; then
  1262.     echo shar: \"'classname.h'\" unpacked with wrong size!
  1263. fi
  1264. # end of 'classname.h'
  1265. fi
  1266. echo shar: End of archive 1 \(of 4\).
  1267. cp /dev/null ark1isdone
  1268. MISSING=""
  1269. for I in 1 2 3 4 ; do
  1270.     if test ! -f ark${I}isdone ; then
  1271.     MISSING="${MISSING} ${I}"
  1272.     fi
  1273. done
  1274. if test "${MISSING}" = "" ; then
  1275.     echo You have unpacked all 4 archives.
  1276.     rm -f ark[1-9]isdone
  1277. else
  1278.     echo You still need to unpack the following archives:
  1279.     echo "        " ${MISSING}
  1280. fi
  1281. ##  End of shell archive.
  1282. exit 0
  1283. -- 
  1284. Mike Wexler(wyse!mikew)    Phone: (408)433-1000 x1330
  1285. Moderator of comp.sources.x
  1286.